package com.jiangyg.mall.product.service;

import com.jiangyg.mall.core.support.restful.Pagination;
import com.jiangyg.mall.product.dto.BrandDTO;
import com.jiangyg.mall.product.dto.CategoryBrandDTO;
import com.jiangyg.mall.product.vo.BrandVO;
import com.jiangyg.mall.product.vo.CategoryBrandVO;

import java.util.List;

/**
 * 类描述：品牌
 *
 * @author jiangyg
 * @email email@jiangyg.com
 * @date 2021-10-18 22:25:29
 */
public interface BrandService {

    /**
     * 功能描述：品牌分页查询
     *
     * @param pagination 分页参数
     * @return 返回分页信息
     */
    Pagination<BrandVO> selectPagination(Pagination<BrandVO> pagination) throws Exception;

    /**
     * 功能描述：保存或者修改品牌
     *
     * @param dto 品牌
     * @return 返回是否操作成功
     */
    boolean saveOrUpdate(BrandDTO dto) throws Exception;

    /**
     * 功能描述：根据ID获取Brand
     *
     * @param brandId 品牌ID
     * @return 返回品牌
     */
    BrandVO selectById(Long brandId) throws Exception;

    /**
     * 功能描述：批量删除Brand
     *
     * @param brandIds 要删除的ID数组
     * @return 返回是否操作成功
     */
    boolean delete(List<Long> brandIds);

    /**
     * 功能描述：品牌分类关联列表
     *
     * @param dto 参数
     * @return 返回分页品牌
     */
    List<CategoryBrandVO> relationList(CategoryBrandDTO dto) throws Exception;

    /**
     * 功能描述：保存或者修改品牌分类关联
     *
     * @param dto 品牌
     * @return 结果
     */
    boolean relationSave(CategoryBrandDTO dto) throws Exception;

    /**
     * 功能描述：删除品牌分类关联
     *
     * @param dto 品牌
     * @return 结果
     */
    boolean relationDelete(CategoryBrandDTO dto);

}

